﻿'Imports System.Web
'Imports Fgv.Framework.Seguranca.Dominio
'Namespace Seguranca.Servico

'    ''' <summary>
'    ''' Interface de autenticação de serviço.
'    ''' </summary>
'    ''' <remarks></remarks>
'    Public Interface IAutenticacaoServico

'        Property TabelaUsusiga() As String

'        Property CampoSenha() As String

'        ''' <summary>
'        ''' Identifica se o usuário está cadastrado no sistema acadêmico.
'        ''' </summary>
'        ''' <returns>Usuário cadastrado ou Nothing, caso não seja encontrado.</returns>
'        <Obsolete("Não será dado suporte em versões futuras.")> _
'        Function AutenticaUsuario(ByVal _login As String, ByVal _senha As String) As Usuario

'        ''' <summary>
'        ''' Identifica se o usuário está com acesso bloqueado no sistema acadêmico.
'        ''' </summary>
'        ''' <returns>Verdadeiro ou Falso, de acordo com a situação de bloqueio do usuário.</returns>
'        <Obsolete("Não haverá suporte futuro a essa funcionalidade. Utilize o método AUTENTICA.")> _
'        Function UsuarioEstaBloqueado(ByVal _login As String) As Boolean

'        '''' <summary>
'        '''' Identifica se o usuário já está autenticado no Sistema Acadêmico (núcleo) ou no módulo (aba) do SigaDois.
'        '''' Caso esteja apenas no núcleo, cria informações de contexto para torná-lo autenticado também no 
'        '''' SigaDois.
'        '''' </summary>
'        '<Obsolete("Não haverá suporte futuro a essa funcionalidade.")> _
'        'Function UsuarioEstaAutenticado(ByVal _httpContext As HttpContext) As Boolean

'        '''' <summary>
'        '''' Obtém nome do usuário autenticado.
'        '''' </summary>
'        '''' <returns>
'        '''' Nome do usuário ou Nothing (null) caso não autenticado.
'        '''' </returns>
'        'Function ObtemNomeUsuarioAutenticado() As String

'        '''' <summary>
'        '''' Obtém endereço IP do cliente cujo usuário está autenticado.
'        '''' </summary>
'        '''' <returns>alm
'        '''' Endereço IP ou Nothing (null) caso não autenticado.
'        '''' </returns>
'        'Function ObtemIPUsuarioAutenticado() As String

'        ''' <summary>
'        ''' Obtém o valor de chave do Perfil do usuário logado, dada uma chave.
'        ''' </summary>
'        ''' <returns>
'        ''' Valor da chave informada, pertencente ao usuário logado, ou Nothing, caso não haja.
'        ''' </returns>
'        Function ObtemPerfilValorPorPerfilChave(ByVal _chave As String) As String

'        ''' <summary>
'        ''' Obtém o valor de chave da Sessão do usuário logado, dada uma chave.
'        ''' </summary>
'        ''' <returns>
'        ''' Valor da chave informada, pertencente ao usuário logado, ou Nothing, caso não haja.
'        ''' </returns>
'        Function ObtemSessaoValorPorSessaoChave(ByVal _chave As String) As String

'        ''' <summary>
'        ''' Obtém usuário da sessão e registra-o no contexto http.
'        ''' </summary>
'        Function RecuperaContextoUsuario(ByVal _httpContext As HttpContext) As Boolean

'        ''' <summary>
'        ''' Obtém usuário do contexto http e persiste-o na sessão.
'        ''' </summary>
'        Function PersisteContextoUsuario(ByVal _httpContext As HttpContext) As Boolean

'        ''' <summary>
'        ''' Identifica, através de um código hash (digest), se o sistema que enviou as credenciais 
'        ''' do usuário é um sistema reconhecido e confiável.
'        ''' </summary>
'        Function SistemaOrigemEConfiavel(ByVal _digest As String) As Boolean

'        ''' <summary>
'        ''' Retorna o nome do usuário pelo código externo.
'        ''' </summary>
'        ''' <param name="_codigoExterno">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Function BuscarNomePorCodigoExterno(ByVal _codigoExterno As String) As String

'        ''' <summary>
'        ''' Retorna a senha do usuário pelo código externo.
'        ''' </summary>
'        ''' <param name="_codigoExterno">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Function BuscarSenhaPorCodigoExterno(ByVal _codigoExterno As String) As String

'        ''' <summary>
'        ''' Retorna o e-mail do usuário pelo código externo.
'        ''' </summary>
'        ''' <param name="_codigoExterno">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Function BuscarEmailPorCodigoExterno(ByVal _codigoExterno As String) As String

'        ''' <summary>
'        ''' Retorna o código externo pelo e-mail do usuario.
'        ''' </summary>
'        ''' <param name="_email">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Function BuscarCodigoExternoPorEmail(ByVal _email As String) As String

'        '''' <summary>
'        '''' Alteração de senha do usuário
'        '''' </summary>
'        '''' <param name="_login">String</param>
'        '''' <param name="_senha">String</param>
'        '''' <remarks></remarks>
'        '<Obsolete("Não será dado suporte em versões futuras.")> _
'        'Sub AlterarSenha(ByVal _login As String, ByVal _senha As String)

'        Sub AlterarSenha(ByVal _login As String, ByVal _senhaAtual As String, ByVal _novaSenha As String, Optional ByVal _confirmacaoNovaSenha As String = "")

'        Function GerarSenhaForte() As String

'        Function SenhaEhForte(ByVal _senha As String) As Boolean

'        Function RetornarNotaSenha(ByVal _senha As String) As Integer

'        Function Autentica(ByVal _login As String, ByVal _senha As String) As ResultadoAutenticacao

'        Sub AlterarDataExpiracaoSenha(ByVal _login As String, ByVal _novaData As Date)

'        Function AutenticaImpressaoContrato(ByVal _login As String, ByVal _senha As String) As Boolean

'    End Interface
'End Namespace